import { useCallback, useState } from "react";
import ErrorHandlerProvider from "../providers/errorHandlerProvider";
import ErrorDialog from "./ErrorDialog";

const ErrorContainer = ({children}) => {
  const [error, setError] = useState();
  const [errorTitle, setErrorTitle] = useState();
  const [action, setAction] = useState();

  if (error) {
    console.error(
      "Возникла ошибка",
      errorTitle,
      JSON.stringify(error)
    );
  }

  const callback = useCallback((title, err, action) => {
    console.error("Обнаружена ошибка ");
    console.error("Заголовок ошибки: ", title);
    console.error("Содержание ошибки", JSON.stringify(err));
    setError(err);
    setErrorTitle(title);
    setAction(action);
  }, []);

  return (
    <ErrorHandlerProvider callback={callback}>
      {children}

      {error && (
        <ErrorDialog
          title={errorTitle}
          action={action}
          error={error}
        />
      )}
    </ErrorHandlerProvider>
  );
};

export default ErrorContainer;
